package com.song.tools.trigger;

/**
 * 触发器类型<br>
 * 建议使用枚举实现此接口，比如：<br>
 * <ul>
 *     <li><b>1、定义TriggerTypeEnum</b>
 *     <br>
 *     <pre>
 *         <code>
 * <code>@AllArgsConstructor</code>
 * <code>@Getter</code>
 * public enum TriggerTypeEnum implements TriggerType {
 *     // 给用户设置角色
 *     GRANT_ROLE_FOR_USER(1, "给用户设置角色"),
 *     // 用户登录
 *     USER_LOGIN(2, "用户登录"),
 *     ;
 *     private final Integer code;
 *     private final String desc;
 * }
 *         </code>
 *     </pre>
 *     </li>
 *     <li><b>2、继承AbstractTriggerTemplate并实现对应的 trigger方法和无参数构造器</b>
 *     <br>
 *     <pre>
 *         <code>
 * <code>@Slf4j</code>
 * <code>@Component</code>
 * public class GrantRoleForUserTrigger extends AbstractTriggerTemplate<SysRoleUserGrantRolesRequest, SysRoleUserGrantRolesResponse> {
 *     public GrantRoleForUserTrigger() {
 *         super(TriggerTypeEnum.GRANT_ROLE_FOR_USER);
 *     }
 *
 *     // ...省略其他方法
 * }
 * </code>
 *     </pre>
 *     </li>
 * </ul>
 *
 *
 * @author song tools
 * @since 2024-07-19
 */
public interface TriggerType {

    /**
     * 获取触发器类型编码
     *
     * @return 触发器类型编码
     */
    Integer getCode();

    /**
     * 获取触发器类型描述
     *
     * @return 触发器类型描述
     */
    String getDesc();
}
